package licode.unisop.client.api;


import licode.unisop.client.info.SopIdInfo;
import licode.unisop.client.info.SopPlatAuthInfo;
import licode.unisop.client.info.SopPlatHeartInfo;
import licode.unisop.client.vo.SopAuthPlatform;

/**
 * 定义平台认证相关的接口
 *
 * @author licode
 */
public interface SopPlatformAuth {
    /**
     * 验证平台（各个平台登录时调用）
     * @param authInfo 平台认证信息
     * @return 返回临时生成的平台Token
     */
    SopAuthPlatform register(SopPlatAuthInfo authInfo);

    /**
     * 通过平台标识查询平台信息
     * @param idInfo 平台标识
     * @return 平台信息
     */
    SopAuthPlatform fromId(SopIdInfo idInfo);

    /**
     * 获取当前已经认证的平台数
     * @return 认证的平台数
     */
    long getAuthCount(SopIdInfo idInfo);

    /**
     * 对指定的平台进行禁用
     * @param idInfo 平台ID
     */
    void forbid(SopIdInfo idInfo);

    /**
     * 对认证的平台进行续期
     * @param req 平台信息
     * @return 成功返回OK
     */
    String renew(SopPlatHeartInfo req);
}
